package ro.inf.bomberman;

/**
 * Diese Klasse war am Anfang als Vaterklasse für Bomb, Block und Spieler
 * gedacht, da diese explode() benötigen, wurde aber im Fortlauf zunehmend
 * unnötiger. Es hätte sich angeboten, sie als Interface umzuschreiben, aber wir
 * wollten kein Risiko auf eventuelle Seiteneffekte eingehen. Die Methoden
 * getRadius() und setRadius() werden noch benutzt.
 *
 * @author Felix
 */
public class Explosion implements Drawable {

    private Size size;
    private final Coordinate coords;
    private int radius;
    /**
     * Spielfeld
     */
    protected GameField spielfeld;

    /**
     * Konstruktor der Klasse Explosion.
     *
     * @author Felix
     * @param coordinates
     * @param spielfeld
     * @param explosionTime
     */
    public Explosion(Coordinate coordinates, GameField spielfeld, int explosionTime) {
        this.spielfeld = spielfeld;
        this.coords = coordinates;
        this.size = new Size(40, 40);
        setRadius();
    }

    /**
     * Lässt das Objekt, für das die Methode aufgerufen wurde, explodieren. Für
     * alle betroffenen Klassen wurde diese Methode überladen und läuft jeweils
     * anders ab.
     *
     * @author Felix
     */
    public void explode() {
    }

    // ~~~~~~~~~~~~  getMethoden ~~~~~~~~~~~~
    /**
     * Gibt die Größe des Objekts in Pixeln zurück.
     *
     * @author Felix
     * @return Size
     */
    public Size getSize() {
        return this.size;
    }

    /**
     * Gibt die Position des Objekts als Coordinate zurück.
     *
     * @author Felix
     * @return Coordinate
     */
    public Coordinate getPosition() {
        return this.coords;
    }

    /**
     * Gibt den Radius der Explosion zurück.
     *
     * @author Felix
     * @return int
     */
    public int getRadius() {
        return this.radius;
    }

    // ~~~~~~~~~~~~  setMethoden ~~~~~~~~~~~~
    /**
     * Setzt die Variable für den Explosionsradius. Dieser ist nur für die
     * Klasse Bomb relevant.
     *
     * @author Felix
     */
    public void setRadius() {
        this.radius = 2;
    }
}
